package com.dhecp.project.system.mapper;

import com.dhecp.core.genericDao.GenericDao;
import com.dhecp.project.system.domain.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 功能dao层
 * @author DH-Xxj
 * @version 2019年9月24日
 */
public interface SysDictionaryForMobileFieldMapper extends GenericDao<SysDictionaryForMobileField, String> {


    /**
     * 查询所有记录
     * @param parems
     * @return 实体DictionaryForField
     */
    List<SysDictionaryForMobileField> findDictionaryForField(Map<String, Object> params);

    /**
     * 按功能表名查询字段
     * @param parems
     * @return List-DictionaryForModule
     */
    List<SysDictionaryForMobileField> findDictionaryForFieldByTableName(Map<String, Object> params);

    /**
     * 通过guid查询单条记录
     * @param guid
     * @return 实体DictionaryForField
     */
    SysDictionaryForMobileField findDictionaryForFieldByGuid(@Param("guid") String guid);

    /**
     * 获取导入模板、导出数据 字段列表
     * @param params
     * @return List-SysDictionaryForExport
     * @author DH-Xxj
     */
    List<SysDictionaryForExport> findExportField(Map<String, Object> params);

    /**
     * 获取功能页面中字段及各属性
     * @param params
     * @return List-dictionaryForMobileField
     * @author DH-Xxj
     */
    List<SysDictionaryForPageField> findFieldAttributes(Map<String, Object> params);

    /**
     * 获取导入模板列
     * @param params
     * @return List-SysFieldForConditions
     * @author DH-Xxj
     */
    List<SysFieldForConditions> findFieldFrontImport(Map<String, Object> params);

    /**
     * 获取必填字段
     * @param params
     * @return List-dictionaryForMobileField
     * @author DH-Xxj
     */
    List<SysDictionaryForMobileField> findFieldFrontRequired(Map<String, Object> params);

    /**
     * 获取作为查询条件的字段
     * @param moduleTable 必要参数：功能唯一标识
     * @param loginUser 可选参数：当前登录用户编号
     * @param getFieldAttributesType 可选参数：类型【page：查询页面中显示的查询条件（对于当前用户未被隐藏的查询条件字段）；pagecallin：调入页面中显示的查询条件（对于当前用户未被隐藏的查询条件字段）；wherestr：后端组装查询语句的条件（所有查询条件字段）】
     * @param getFieldAttributesSystemType 可选参数：类型【web：网页端；mobile：手机端】
     * @return List-SysFieldForConditions
     * @author DH-Xxj
     */
    List<SysFieldForConditions> findFieldFrontConditions(Map<String, Object> params);

    /**
     * 获取用户指定功能数据权限字符串
     * @param params
     * @return String
     * @author DH-Xxj
     */
    String findJurisdictionForData(Map<String, Object> params);

    /**
     * 查询用户流程任务（指定nid前一单、本单、后一单）
     * @param privateAUser 必要参数：查询用户编号
     * @param moduleTable 必要参数：查询单据唯一标识
     * @param privateNid 必要参数：查询单据nid号
     * @param flowtype 必要参数：查询类型【前单（last）、本单（this）、后单（next）】
     * @return SysUserProcessInstanceTask 实体
     * @author DH-Xxj
     */
    SysUserProcessInstanceTask findUserProcessInstanceTask(Map<String, Object> params);

    /**
     * 查询用户流程任务（指定nid前一单）
     * @param params
     * @return SysUserProcessInstanceTask
     * @author DH-Xxj
     */
    SysUserProcessInstanceTask findUserProcessInstanceTaskLastNid(Map<String, Object> params);

    /**
     * 查询用户流程任务（指定nid后一单）
     * @param params
     * @return SysUserProcessInstanceTask
     * @author DH-Xxj
     */
    SysUserProcessInstanceTask findUserProcessInstanceTaskNextNid(Map<String, Object> params);

    /**
     * 查询用户流程任务（指定nid）
     * @param params
     * @return SysUserProcessInstanceTask
     * @author DH-Xxj
     */
    SysUserProcessInstanceTask findUserProcessInstanceTaskByNid(Map<String, Object> params);

    /**
     * 查询用户指定PGuid功能任务数（指定nid或guid）
     * @param params
     * @return SysUserProcessInstanceTask
     * @author DH-Xxj
     */
    SysUserProcessInstanceTask findUserModuleTaskByPGuid(Map<String, Object> params);

    /**
     * 查询用户指定PGuid通知数（指定nid或guid）
     * @param params
     * @return SysUserProcessInstanceTask
     * @author DH-Xxj
     */
    SysUserProcessInstanceTask findUserModuleNoticeByPGuid(Map<String, Object> params);

    /**
     * 新增功能字段数据字典
     * @param dictionaryForMobileField
     * @return
     */
    int insertDictionaryForField(SysDictionaryForMobileField dictionaryForMobileField);

    /**
     * 修改功能字段数据字典
     * @param dictionaryForMobileField
     * @return
     */
    int updateDictionaryForField(SysDictionaryForMobileField dictionaryForMobileField);

    /**
     * 删除功能字段数据字典
     * @param dictionaryForMobileField
     * @return
     */
    int deleteDictionaryForFieldByGuid(SysDictionaryForMobileField dictionaryForMobileField);

    int deleteDictionaryForFieldBymoduleTable(@Param("moduleTable") String moduleTable);


}
